[GitHub] Pull RequestのBaseブランチが自動で変更されるようになっていた
こんにちは、CX事業本部 IoT事業部の若槻です。
GitHubで、Pull RequestのBaseブランチが自動で変更されるようになっていたため、動作をまとめてみました。
先にまとめ
どういうことかと言うと、下記の1から4を経た場合に、5でBaseブランチが自動で親ブランチに変更されるため便利だという話です。
- ブランチの参照関係が
develop
(親) ->feature1
(子) ->feature2
(孫)となっている develop
をBaseとしてfeature1
のPull Requestを作成するfeature1
をBaseとしてfeature2
のPull Requestを作成するfeature1
をdevelop
にマージして削除するfeature2
のPull RequestのBaseブランチが自動でdevelop
に変更される
ある日の開発風景(1〜3)
前述のまとめの1〜3に該当する部分です。
デフォルトブランチ(develop
)から作業用ブランチ(feature1
)を切って開発作業を行いました。
作業が終わったので、feature1
のPull Requestを作成してレビューを依頼します。
そしてレビューを待っている間に、さらにfeature1
からfeature2
を切って別の開発作業を行いました。この時の各ブランチの参照関係は下記のようになります。
develop
(親) ->feature1
(子) ->feature2
(孫)
feature2
の作業も早々と終わり、これのPull Requestも作成しようとしました。しかしこの時点でfeature1
のPull Requestのレビューがまだ終わっておらずdevelop
に未マージの状態でした。そのためfeature2
のBaseブランチをdevelop
とするとPull Requestにfeature1
の変更まで混入してしまいます。
Pull Requestはマージ先(base)とマージ元(head)のブランチの差分により作られるため当然といえば当然ですが、これではレビュー時に不都合です。
そこでBaseブランチを直接の参照先であるfeature1
とすることにより、feature2
のPull Requestにはfeature2
の変更のみ含めるようにしました。
子ブランチを親ブランチにマージして削除(4〜5)
前述のまとめの4〜5に該当する部分です。
feature1
のPull Requestのレビューが完了したため、feature1
をdevelop
にマージしました。
この時点ではfeature2
のPull Requestには何も変化はありません。
マージしたfeature1
を削除します。
するとfeature2
のPull RequestのBaseブランチがdevelop
に自動で変更されました。
Base automatically changed from feature1 to develop
という履歴も記録されています。
おわりに
以前まではこのような自動変更は無かったと思うのですが、いつの間にか機能追加されていたようです。(前述の1〜3があまりないパターンだったため気づかなかったようです。)
今後はPull Requestに下記のような書き置きをする必要は無くなりました。
以上